package com.hcr.elecident;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Base64;
import android.view.KeyEvent;
import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

import com.alibaba.fastjson.JSON;
import com.baidu.aip.FaceSDKManager;
import com.hcr.entity.Device;
import com.hcr.entity.JszEntity;
import com.hcr.entity.User;
import com.hcr.entity.WxOrder;
import com.hcr.entity.WxResult;
import com.hcr.util.MD5;
import com.hcr.util.MacAddressManager;
import com.hcr.util.MyConst;
import com.hcr.util.Result;
import com.jia.jsesaypaylibrary.wxpay.WXPay;
import com.jia.jsesaypaylibrary.wxpay.WXPayConfig;
import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI;

import org.apache.http.NameValuePair;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

import cn.bfy.dualsim.TelephonyManagement;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

import static com.hcr.elecident.WelcomeActivity.TEMP_DATA;

public class PageActivity extends Activity {

    WebView webView;
    String fileName = "";

    private IWXAPI iwxapi;
    private TelephonyManagement.TelephonyInfo telephonyInfo;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_page);
       com.hcr.elecident.ActivityManager.getActivityManager().popActivity(this);

        webView = (WebView) findViewById(R.id.mypage);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        //允许webview对文件的操作
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAllowFileAccessFromFileURLs(true);

        // 支持localstore
        webSettings.setDomStorageEnabled(true);

        webSettings.setDefaultTextEncodingName("utf-8");
        webView.setWebChromeClient(new chromClient());

        // 支持下载
        webView.setDownloadListener(new MyDownload());

        webView.addJavascriptInterface(this,"nativeMethod");

//        String id = getIntent().getStringExtra("id");
//        String name = getIntent().getStringExtra("name");
//        String num = getIntent().getStringExtra("num");
//        String pass = getIntent().getStringExtra("pass");
//        fileName = getIntent().getStringExtra("fileName");

        SharedPreferences pre = getSharedPreferences(TEMP_DATA, MODE_PRIVATE);
        String id = pre.getString("id", getIntent().getStringExtra("id"));

        String name = pre.getString("name", getIntent().getStringExtra("name"));
        String num = pre.getString("idNumber", getIntent().getStringExtra("num"));
        String pass = pre.getString("pass", getIntent().getStringExtra("pass"));
        fileName = pre.getString("photo", getIntent().getStringExtra("fileName"));

        if (fileName == null || fileName == "null"){
            fileName = "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IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYTwAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//2Q==";
        } else if (fileName.contains(".jpg")){
            fileName = imageToBase64(fileName);
        }

        if (pass == null){
            pass = "n";
        }
        System.out.println("人脸识别结果："+pass);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });


//        System.out.println("用户编号："+id);
        webView.loadUrl("file:///android_asset/6.html?name="+name+"&num="+num+"&id="+id+"&pass="+pass);
    }

    private class chromClient extends WebChromeClient {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {

            if (newProgress == 100) {
                //页面加载完成执行的操作
//                String path = "file://" + fileName;
//                System.out.println("<><><><>"+fileName);
                String action = "javascript:aa('" + fileName +"')";
                runWebView(action);
            }
            super.onProgressChanged(view, newProgress);
        }
    }

    private void runWebView(final String url){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                webView.loadUrl(url);
            }
        });
    }

    @JavascriptInterface
    public void scan() {
        startActivity(new Intent(this, ScanActivity.class));
    }

    /**
     * 上传跳转
     */

    @JavascriptInterface
    public void uploadMsg() {
        startActivity(new Intent(this, UploadMsg.class));
    }


    @JavascriptInterface
    public boolean freeJSZ(String uid, String name,String idnumber,String terminalid) throws IOException {
        return postJSZ(uid,name,idnumber,terminalid);

    }
    private Map<String, String> show() {
        try {
            telephonyInfo = TelephonyManagement.getInstance().updateTelephonyInfo(this).getTelephonyInfo(this);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String imeiSIM1 = telephonyInfo.getImeiSIM1();
        String imeiSIM2 = telephonyInfo.getImeiSIM2();

        String imsiSIM1 = telephonyInfo.getImsiSIM1();
        String imsiSIM2 = telephonyInfo.getImsiSIM2();

        String macid = MacAddressManager.getAdresseMAC(getApplicationContext());
        String brand = Build.BRAND;  // 品牌
        String android = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
        String model = Build.MODEL;

//        System.out.println(" IMEI1 : " + imeiSIM1 + "\n" +
//                " IMEI2 : " + imeiSIM2 + "\n" +
//                " IMSI1 : " + imsiSIM1 + "\n" +
//                " IMSI2 : " + imsiSIM2 + "\n");

        Map<String, String> map = new HashMap<>();
        map.put("imei1", imeiSIM1);
        map.put("imei2", imeiSIM2);
        map.put("imsi1", imsiSIM1);
        map.put("imsi2", imsiSIM2);

        map.put("macid", macid);
        map.put("androidid", android);
        map.put("deviceinfo", brand + " " + model);

        return map;
    }
    @JavascriptInterface
    public int reg(String phone, String password) throws Exception {
        Map<String, String> res = new HashMap<>();
        if (Build.VERSION.SDK_INT >= 23 && checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 100);
        } else {
            res = show();
        }

//        System.out.println("phone:" + phone + ",password:" + password);
        postDevice();
        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("phone", phone)
                .add("password", password)

                .add("macid", res.get("macid"))
                .add("androidid", res.get("androidid"))
                .add("imei1", res.get("imei1"))
                .add("imei2", res.get("imei2"))
                .add("imsi1", res.get("imsi1"))
                .add("imsi2", res.get("imsi2"))
                .add("deviceinfo", res.get("deviceinfo"))
                .build();
        Request request = new Request.Builder()
                .url(new URL(MyConst.HT + "user/reg"))
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        String responseData = response.body().string();

        Result result = JSON.parseObject(responseData, new Result<User>().getClass());

//        System.out.println("返回数据：" + result.toString());
        if (result.getCode() == 401) {
            return 401;
        } else if (result.getCode() == 200) {
            // 收集收集信息
            return 200;
        } else if (result.getCode() == 400) {
            return 400;
        }
        return 400;
    }
    public void postDevice() {
        OkHttpClient okHttpClient = new OkHttpClient();
//        System.out.println(getDevice());
        String json = getDevice();
        RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
        Request request = new Request.Builder()
                .url(MyConst.HT + "device/save")//请求的url
                .post(requestBody)
                .build();
        okhttp3.Call call = okHttpClient.newCall(request);
        call.enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(okhttp3.Call call, IOException e) {

            }

            @Override
            public void onResponse(okhttp3.Call call, Response response) throws IOException {
                final String res = response.body().string();
                if (response.code() == 200) {
//                    System.out.println("======================ok==============================");
                }
            }
        });
    }
    @JavascriptInterface
    public boolean getSaveJSZ(String uid) throws IOException{
        // 查询返回结果
        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("uid",uid)
                .build();
        Request request = new Request.Builder()
                .url(new URL(MyConst.HT+"service/jsz/one"))
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        String responseData = response.body().string();

        Result result = JSON.parseObject(responseData,new Result<User>().getClass());
        System.out.println("获取驾驶证信息："+result.getCode());
        if (result.getCode().equals(200)){
            return true;
        }else if (result.getCode().equals(400)){
            return false;
        } else {
            return false;
        }
    }

    @JavascriptInterface
    public void jszPay(String uid,String name,String idnumber,String terminalid,String totalFee) throws Exception {
        try{
            OkHttpClient client = new OkHttpClient();
            RequestBody body = new FormBody.Builder()
                    .add("totalFee", totalFee)
                    .add("uid", uid)
                    .add("body","驾驶证认证服务费")
                    .add("type","1")
                    .add("attach","b,"+name+","+idnumber+","+terminalid+","+uid)
                    .build();

            Request request = new Request.Builder()
                    .url(new URL(MyConst.HT + "weixin/order"))
                    .post(body)
                    .build();

            Response response = client.newCall(request).execute();

            String responseData = response.body().string();

            WxResult result = JSON.parseObject(responseData, new WxResult().getClass());

            if (!"".equals(result.getPrepayid()) || null != result.getPrepayid()) {
                PayReq req = new PayReq();
                req.appId = result.getAppid();
                req.partnerId = result.getPartnerid();
                req.prepayId = result.getPrepayid();
                req.packageValue = "Sign=WXPay";
                req.nonceStr = result.getNoncestr();
                req.timeStamp = result.getTimestamp();


                WXPayConfig.getInstance().setAPI_KEY(MyConst.API_KEY);
                WXPayConfig.getInstance().setAPP_ID(MyConst.APP_ID);
                WXPayConfig.getInstance().setMCH_ID(MyConst.MCH_ID);

                WXPay wxPay = new WXPay(PageActivity.this);
                wxPay.pay(req.prepayId);
            } else {
                Toast.makeText(this,"服务异常",Toast.LENGTH_SHORT).show();
            }
        }catch (Exception e){
            Toast.makeText(this,"服务异常",Toast.LENGTH_SHORT).show();
        }

        // 查询订单是否支付成功
        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("wx_no","123")
                .build();
        Request request = new Request.Builder()
                .url(new URL(MyConst.HT+"order/getOrderByWxNO"))
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        String responseData = response.body().string();

        Result result = JSON.parseObject(responseData,new Result<User>().getClass());
        if (result.getCode() == 200){
            String wxOrder =  result.getData().toString();
            WxOrder wx = JSON.parseObject(wxOrder,WxOrder.class);
            if (200 == wx.getStatus()){
                System.out.println("支付成功");
            }else {
                System.out.println("支付失败");
            }
        }
    }


    /**
     * 退出到未登录状态
     */
    @JavascriptInterface
    public void backLogin(){
        // 清楚数据
        SharedPreferences preferences = getSharedPreferences(TEMP_DATA,MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.clear();
        editor.commit();

        clearGoTo();

    }

    @JavascriptInterface
    public void gb(){
        webView.goBack();
    }


    public void clearGoTo(){
        final Intent it = new Intent(this, MainActivity.class);
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                startActivity(it);
                finish();
            }
        };
        timer.schedule(task, 100 * 1);
    }

    @JavascriptInterface
    public void clear() {
//        com.hcr.elecident.ActivityManager.getActivityManager().popAllActivity();

        int size =  com.hcr.elecident.ActivityManager.getActivityManager().getActivityStackSize();
        SharedPreferences preferences = getSharedPreferences(TEMP_DATA,MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.clear();
        editor.commit();

        clearGoTo();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @JavascriptInterface
    public void over(){
//        finish();
//        finish();
        ActivityManager.getActivityManager().popAllActivity();
        System.exit(0);//正常退出
    }
    @JavascriptInterface
    public void camera(String name, String num, String id) {
        System.out.println("认证之前传递的参数："+name+","+num+","+id);


//        之前代码
//        Intent intent = new Intent(this, FaceDetectExpActivity.class);
//        intent.putExtra("name", name);
//        intent.putExtra("num", num);
//        intent.putExtra("id", id);
//        startActivity(intent);
//        startItemActivity(FaceDetectExpActivity.class);

//        init();
//        Intent it = new Intent(PageActivity.this, FaceDetectActivity.class);
//        it.putExtra("name","chen");
//        it.putExtra("card","622726199304282052");
//        startActivity(it);

        System.out.println("认证之前传递的参数："+name+","+num+","+id);
        requestPermissions(99, Manifest.permission.CAMERA);

        init();
        Intent it = new Intent(PageActivity.this, FaceDetectActivity.class);
        it.putExtra("name", name);
        it.putExtra("num", num);
        it.putExtra("id", id);
        startActivity(it);
    }

    private void init() {
        // 如果图片中的人脸小于200*200个像素，将不能检测出人脸，可以根据需求在100-400间调节大小
        FaceSDKManager.getInstance().getFaceTracker(this).set_min_face_size(200);
        FaceSDKManager.getInstance().getFaceTracker(this).set_isCheckQuality(true);
        // 该角度为商学，左右，偏头的角度的阀值，大于将无法检测出人脸，为了在1：n的时候分数高，注册尽量使用比较正的人脸，可自行条件角度
        FaceSDKManager.getInstance().getFaceTracker(this).set_eulur_angle_thr(45, 45, 45);
        FaceSDKManager.getInstance().getFaceTracker(this).set_isVerifyLive(true);
    }
    /**
     * 手机号变更
     * @param id
     * @param phone
     * @param password
     * @return
     * @throws Exception
     */
    @JavascriptInterface
    public int updatePhone(String id,String phone,String password,String code) throws Exception {
//        System.out.println("phone:"+phone+",password:"+password);

        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("id",id)
                .add("phone",phone)
                .add("password",password)
                .build();
        Request request = new Request.Builder()
                .url(new URL(MyConst.HT+"user/updatePhone"))
                .post(body)
                .build();
        Response response = client.newCall(request).execute();
        String responseData = response.body().string();

        Result result = JSON.parseObject(responseData,new Result<User>().getClass());
        if (result.getCode().equals(200)){
            return 1;
        }else if (result.getCode().equals(400)){
            return -1;
        }else if (result.getCode().equals(401)){
            return -2;
        }else if (result.getCode().equals(404)){
            return -3;
        }
        return -100;
    }


    class  MyDownload implements DownloadListener {

        @Override
        public void onDownloadStart(String url, String userAgent,
                                    String contentDisposition, String mimetype, long contentLength) {
            //检测是下载apk
            if(url.endsWith(".apk")){
                //通过uri与Intent来调用系统通知，查看进度
                Uri uri=Uri.parse(url);
                Intent intent=new Intent(Intent.ACTION_VIEW,uri);
                startActivity(intent);
                new DownloadThread(url).start();
            }
        }
    }

    private String genAppSign(List<NameValuePair> params) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < params.size(); i++) {
            sb.append(params.get(i).getName());
            sb.append('=');
            sb.append(params.get(i).getValue());
            sb.append('&');
        }
        sb.append("key=");
        sb.append(MyConst.API_KEY);

        sb.append("sign str\n" + sb.toString() + "\n\n");
        String appSign = MD5.getMessageDigest(sb.toString().getBytes()).toUpperCase();

        return appSign;
    }
    private long genTimeStamp() {
        return System.currentTimeMillis() / 1000;
    }

    public boolean postJSZ(String uid, String name,String idnumber,String terminalid) throws IOException {
        JszEntity jszEntity = new JszEntity(name,idnumber,terminalid,uid);

        OkHttpClient okHttpClient = new OkHttpClient();
        String json = JSON.toJSONString(jszEntity);
        RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
        Request request = new Request.Builder()
                .url(MyConst.HT + "service/jsz")//请求的url
                .post(requestBody)
                .build();
        okhttp3.Call call = okHttpClient.newCall(request);
        call.enqueue(new okhttp3.Callback() {

            @Override
            public void onFailure(okhttp3.Call call, IOException e) {
            }

            @Override
            public void onResponse(okhttp3.Call call, Response response) throws IOException {
                final String res = response.body().string();
                System.out.println(">>>>>>>>>>>"+res);
                Result result = JSON.parseObject(res, Result.class);
//                if (result.getCode() == 200){
//                    flag[0] = true;
//                }
            }
        });

        while (true){
            if (getSaveJSZ(uid) == true){
                return true;
            }
        }
    }

    public String getDevice() {
        String macid = MacAddressManager.getAdresseMAC(getApplicationContext());
        String brand = Build.BRAND;  // 品牌
        String android = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
        String model = Build.MODEL;
        String os = Build.VERSION.RELEASE;

        Device device = new Device(brand, model, android, os, macid);
        String s = JSON.toJSONString(device);
        return s;
    }

    /**
     * 将图片转换成Base64编码的字符串
     */
    public static String imageToBase64(String path){
        if(TextUtils.isEmpty(path)){
            return null;
        }
        InputStream is = null;
        byte[] data = null;
        String result = null;
        try{
            is = new FileInputStream(path);
            //创建一个字符流大小的数组。
            data = new byte[is.available()];
            //写入数组
            is.read(data);
            //用默认的编码格式进行编码
            result = Base64.encodeToString(data,Base64.DEFAULT);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(null !=is){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return result;
    }


    @JavascriptInterface
    public void h5pay(){
        Intent intent = new Intent(PageActivity.this,H5PayActivity.class);
        startActivity(intent);
    }

    public void requestPermissions(int requestCode, String permission) {
        if (permission != null && permission.length() > 0) {
            try {
                if (Build.VERSION.SDK_INT >= 23) {
                    // 检查是否有权限
                    int hasPer = checkSelfPermission(permission);
                    if (hasPer != PackageManager.PERMISSION_GRANTED) {
                        // 是否应该显示权限请求
                        boolean isShould = shouldShowRequestPermissionRationale(permission);
                        requestPermissions(new String[]{permission}, requestCode);
                    }
                } else {

                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}
